# -*- coding: latin1 -*-

import memoria
from Stan import *

class Variable:
  def __init__(self, id, tipo, local):
    self.id= id
    self.tipo= tipo
    self.local= local

  def talla(self):
    return self.tipo.talla()

  def fijaDireccion(self, dir):
    if self.tipo.elemental():
      if self.local:
        self.dir= MI1(dir, memoria.FP)
      else:
        self.dir= MD(dir)
    else:
      self.dir= dir

  def cogeValor(self,c):
    c.append(POP(self.dir, self.id))

  def generaCodigo(self, c):
    c.append(PUSH(self.dir, self.id))

  def __str__ (self):
    return "%s (tipo: %s; local: %s)" % (self.id, self.tipo, self.local)
